<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>jquery源码解析视频80-2</title>
    <script src="../jquery-2.0.3.js"></script>
  </head>

  <body>
    <script>
      jQuery.fn.extend({
        // 5510
        empty: function () {
          var elem,
            i = 0;
          // 遍历当前匹配的每个元素
          for (; (elem = this[i]) != null; i++) {
            // 如果是元素节点的话
            if (elem.nodeType === 1) {
              // Prevent memory leaks
              // 清空内容和事件，防止内存泄漏
              jQuery.cleanData(getAll(elem, false));

              // Remove any remaining nodes
              // 清空节点所有内容
              elem.textContent = "";
            }
          }
          return this;
        },

        // 5446
        text: function (value) {
          return jQuery.access(
            this,
            function (value) {
              return value === undefined
                ? jQuery.text(this) // 获取文本节点
                : this.empty().append(
                    (
                      (this[0] && this[0].ownerDocument) ||
                      document
                    ).createTextNode(value) // createTextNode() 可创建文本节点。
                  );
            },
            null,
            value,
            arguments.length
          );
        }
      });

      // 5968
      function getAll(context, tag) {
        var ret = context.getElementsByTagName
          ? context.getElementsByTagName(tag || "*")
          : context.querySelectorAll
          ? context.querySelectorAll(tag || "*")
          : [];

        return tag === undefined || (tag && jQuery.nodeName(context, tag))
          ? jQuery.merge([context], ret)
          : ret;
      }
    </script>
  </body>
</html>
